Indian Landmark Detection Using VGG-19¶
Importing libraries¶
In [ ]:
import os
# import cv2
import pickle
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import keras
import tensorflow
from tensorflow.keras.models import Model
from tensorflow.keras.utils import plot_model
from tensorflow.keras.models import Sequential
from tensorflow.keras.applications import VGG19
from tensorflow.keras.callbacks import EarlyStopping
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.layers import Input, Lambda, Dense, Flatten, Dropout, BatchNormalization, Activation
from sklearn.metrics import confusion_matrix, classification_report, accuracy_score, recall_score, precision_score, f1_score
Defining data paths¶
In [ ]:
train_path = r'archive - Copy\Indian-monuments\images\train'
test_path = r'archive - Copy\Indian-monuments\images\test'
Converting image to pixels¶
In [ ]:
for folder in os.listdir(train_path):
sub_path = train_path + "/" + folder
print(folder)
for i in range(1):
temp_path = os.listdir(sub_path)[i]
temp_path = sub_path + "/" + temp_path
img = mpimg.imread(temp_path)
imgplot = plt.imshow(img)
plt.show()
Ajanta Caves
alai_darwaza
alai_minar
basilica_of_bom_jesus
Charar-E- Sharif
charminar
Chhota_Imambara
Ellora Caves
Fatehpur Sikri
Gateway of India
golden temple
hawa mahal pics
Humayun_s Tomb
India gate pics
iron_pillar
jamali_kamali_tomb
Khajuraho
lotus_temple
mysore_palace
qutub_minar
Sun Temple Konark
tajmahal
tanjavur temple
victoria memorial
In [ ]:
def imagearray(path, size):
data = []
for folder in os.listdir(path):
sub_path=path+"/"+folder
for img in os.listdir(sub_path):
image_path=sub_path+"/"+img
img_arr=cv2.imread(image_path)
img_arr=cv2.resize(img_arr,size)
data.append(img_arr)
return data
In [ ]:
size = (250,250)
# train = imagearray(train_path, size)
In [ ]:
# test = imagearray(test_path, size)
In [ ]:
Normalization¶
In [ ]:
# x_train = np.array(train)
# x_test = np.array(test)
# x_train.shape,x_test.shape
In [ ]:
# x_train = x_train/255.0
# x_test = x_test/255.0
Defining target variables¶
In [ ]:
def data_class(data_path, size, class_mode):
datagen = ImageDataGenerator(rescale = 1./255)
classes = datagen.flow_from_directory(data_path,
target_size = size,
batch_size = 32,
class_mode = class_mode)
return classes
In [ ]:
size = (250,250)
train_class = data_class(train_path, size, 'sparse')
test_class = data_class(test_path, size, 'sparse')
Found 7909 images belonging to 24 classes. Found 1045 images belonging to 24 classes.
In [ ]:
y_train = train_class.classes
y_test = test_class.classes
train_d=train_class
test_d=test_class
print(train_class)
<keras.src.legacy.preprocessing.image.DirectoryIterator object at 0x000002ACF0F07DD0>
In [ ]:
train_class.class_indices
Out[ ]:
{'Ajanta Caves': 0,
'Charar-E- Sharif': 1,
'Chhota_Imambara': 2,
'Ellora Caves': 3,
'Fatehpur Sikri': 4,
'Gateway of India': 5,
'Humayun_s Tomb': 6,
'India gate pics': 7,
'Khajuraho': 8,
'Sun Temple Konark': 9,
'alai_darwaza': 10,
'alai_minar': 11,
'basilica_of_bom_jesus': 12,
'charminar': 13,
'golden temple': 14,
'hawa mahal pics': 15,
'iron_pillar': 16,
'jamali_kamali_tomb': 17,
'lotus_temple': 18,
'mysore_palace': 19,
'qutub_minar': 20,
'tajmahal': 21,
'tanjavur temple': 22,
'victoria memorial': 23}
In [ ]:
# y_train.shape,y_test.shape
In [ ]:
import tensorflow as tf
img_height,img_width=180,180
batch_size=32
train_ds = tf.keras.preprocessing.image_dataset_from_directory(
train_path,
validation_split=0.2,
subset="training",
seed=123,
image_size=(img_height, img_width),
batch_size=batch_size)
Found 7909 files belonging to 24 classes. Using 6328 files for training.
In [ ]:
val_ds = tf.keras.preprocessing.image_dataset_from_directory(
train_path,
validation_split=0.2,
subset="validation",
seed=123,
image_size=(img_height, img_width),
batch_size=batch_size)
Found 7909 files belonging to 24 classes. Using 1581 files for validation.
VGG19 Model¶
In [ ]:
# vgg = VGG19(input_shape = (250, 250, 3), weights = 'imagenet', include_top = False)
In [ ]:
# for layer in vgg.layers:
# layer.trainable = False
# x = Flatten()(vgg.output)
# prediction = Dense(24, activation='softmax')(x)
# model = Model(inputs=vgg.input, outputs=prediction)
# model.summary()
# model.compile(
# loss='sparse_categorical_crossentropy',
# optimizer="adam",
# metrics=['accuracy']
# )
In [ ]:
import tensorflow as tf
model = Sequential([tf.keras.layers.BatchNormalization()])
pretrained_model= tf.keras.applications.ResNet50V2(include_top=False,
input_shape=(180,180,3),
pooling='avg',classes=24,
weights='imagenet')
for layer in pretrained_model.layers:
layer.trainable=False
# model.add(tf.keras.layers.Conv2D(filters=180,kernel_size=3,activation="relu",input_shape=[180,180,3]))
model.add(tf.keras.layers.Conv2D(filters=64,kernel_size=3,activation="relu",input_shape=[178,178,3]))
# model.add(tf.keras.layers.MaxPool2D(strides=2,pool_size=2))
model.add(pretrained_model)
model.add(Flatten())
model.add(Dense(units=512, activation='relu'))
model.add(Dense(units=24, activation='softmax'))
# model.add(Flatten())
In [ ]:
model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=['accuracy'])
In [ ]:
# early_stop = EarlyStopping(monitor = 'val_loss', mode='min', verbose = 1, patience = 5)
In [ ]:
# ! pip install tensorflow_hub
Requirement already satisfied: tensorflow_hub in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (0.16.1) Requirement already satisfied: numpy>=1.12.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow_hub) (1.26.2) Requirement already satisfied: protobuf>=3.19.6 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow_hub) (4.25.3) Requirement already satisfied: tf-keras>=2.14.1 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow_hub) (2.16.0) Requirement already satisfied: tensorflow<2.17,>=2.16 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tf-keras>=2.14.1->tensorflow_hub) (2.16.1) Requirement already satisfied: tensorflow-intel==2.16.1 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (2.16.1) Requirement already satisfied: absl-py>=1.0.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (2.1.0) Requirement already satisfied: astunparse>=1.6.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (1.6.3) Requirement already satisfied: flatbuffers>=23.5.26 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (23.5.26) Requirement already satisfied: gast!=0.5.0,!=0.5.1,!=0.5.2,>=0.2.1 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (0.5.4) Requirement already satisfied: google-pasta>=0.1.1 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (0.2.0) Requirement already satisfied: h5py>=3.10.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (3.10.0) Requirement already satisfied: libclang>=13.0.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (16.0.6) Requirement already satisfied: ml-dtypes~=0.3.1 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (0.3.2) Requirement already satisfied: opt-einsum>=2.3.2 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (3.3.0) Requirement already satisfied: packaging in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (23.2) Requirement already satisfied: requests<3,>=2.21.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (2.31.0) Requirement already satisfied: setuptools in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (69.0.2) Requirement already satisfied: six>=1.12.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (1.16.0) Requirement already satisfied: termcolor>=1.1.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (2.4.0) Requirement already satisfied: typing-extensions>=3.6.6 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (4.10.0) Requirement already satisfied: wrapt>=1.11.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (1.16.0) Requirement already satisfied: grpcio<2.0,>=1.24.3 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (1.62.0) Requirement already satisfied: tensorboard<2.17,>=2.16 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (2.16.2) Requirement already satisfied: keras>=3.0.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (3.0.5) Requirement already satisfied: wheel<1.0,>=0.23.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from astunparse>=1.6.0->tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (0.42.0) Requirement already satisfied: rich in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from keras>=3.0.0->tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (13.7.0) Requirement already satisfied: namex in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from keras>=3.0.0->tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (0.0.7) Requirement already satisfied: dm-tree in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from keras>=3.0.0->tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (0.1.8) Requirement already satisfied: charset-normalizer<4,>=2 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from requests<3,>=2.21.0->tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (3.3.2) Requirement already satisfied: idna<4,>=2.5 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from requests<3,>=2.21.0->tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (3.6) Requirement already satisfied: urllib3<3,>=1.21.1 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from requests<3,>=2.21.0->tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (2.2.0) Requirement already satisfied: certifi>=2017.4.17 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from requests<3,>=2.21.0->tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (2024.2.2) Requirement already satisfied: markdown>=2.6.8 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorboard<2.17,>=2.16->tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (3.5.2) Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorboard<2.17,>=2.16->tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (0.7.2) Requirement already satisfied: werkzeug>=1.0.1 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorboard<2.17,>=2.16->tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (3.0.1) Requirement already satisfied: MarkupSafe>=2.1.1 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from werkzeug>=1.0.1->tensorboard<2.17,>=2.16->tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (2.1.5) Requirement already satisfied: markdown-it-py>=2.2.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from rich->keras>=3.0.0->tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (3.0.0) Requirement already satisfied: pygments<3.0.0,>=2.13.0 in c:\users\91995\appdata\roaming\python\python312\site-packages (from rich->keras>=3.0.0->tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (2.17.2) Requirement already satisfied: mdurl~=0.1 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from markdown-it-py>=2.2.0->rich->keras>=3.0.0->tensorflow-intel==2.16.1->tensorflow<2.17,>=2.16->tf-keras>=2.14.1->tensorflow_hub) (0.1.2)
In [ ]:
# import tensorflow as tf
# import tensorflow_hub as hub
# from tensorflow.keras import layers
WARNING:tensorflow:From c:\Users\91995\AppData\Local\Programs\Python\Python312\Lib\site-packages\tf_keras\src\losses.py:2976: The name tf.losses.sparse_softmax_cross_entropy is deprecated. Please use tf.compat.v1.losses.sparse_softmax_cross_entropy instead.
In [ ]:
# def create_model(model_url, num_classes=10):
# """Takes a TensorFlow Hub URL and creates a Keras Sequential model with it.
# Args:
# model_url (str): A TensorFlow Hub feature extraction URL.
# num_classes (int): Number of output neurons in output layer,
# should be equal to number of target classes, default 10.
# Returns:
# An uncompiled Keras Sequential model with model_url as feature
# extractor layer and Dense output layer with num_classes outputs.
# """
# # Download the pretrained model and save it as a Keras layer
# feature_extractor_layer = hub.KerasLayer(model_url,
# trainable=False, # freeze the underlying patterns
# name='feature_extraction_layer',
# input_shape=IMAGE_SHAPE+(3,)) # define the input image shape
# # Create our own model
# model = tf.keras.Sequential([
# feature_extractor_layer, # use the feature extraction layer as the base
# Dense(num_classes, activation='softmax', name='output_layer') # create our own output layer
# ])
# return model
In [ ]:
# resnet_url = "https://tfhub.dev/google/imagenet/resnet_v2_50/feature_vector/4"
In [ ]:
# ! pip install tensorflow
Requirement already satisfied: tensorflow in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (2.16.1) Requirement already satisfied: tensorflow-intel==2.16.1 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow) (2.16.1) Requirement already satisfied: absl-py>=1.0.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow) (2.1.0) Requirement already satisfied: astunparse>=1.6.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow) (1.6.3) Requirement already satisfied: flatbuffers>=23.5.26 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow) (23.5.26) Requirement already satisfied: gast!=0.5.0,!=0.5.1,!=0.5.2,>=0.2.1 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow) (0.5.4) Requirement already satisfied: google-pasta>=0.1.1 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow) (0.2.0) Requirement already satisfied: h5py>=3.10.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow) (3.10.0) Requirement already satisfied: libclang>=13.0.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow) (16.0.6) Requirement already satisfied: ml-dtypes~=0.3.1 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow) (0.3.2) Requirement already satisfied: opt-einsum>=2.3.2 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow) (3.3.0) Requirement already satisfied: packaging in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow) (23.2) Requirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow) (4.25.3) Requirement already satisfied: requests<3,>=2.21.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow) (2.31.0) Requirement already satisfied: setuptools in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow) (69.0.2) Requirement already satisfied: six>=1.12.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow) (1.16.0) Requirement already satisfied: termcolor>=1.1.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow) (2.4.0) Requirement already satisfied: typing-extensions>=3.6.6 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow) (4.10.0) Requirement already satisfied: wrapt>=1.11.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow) (1.16.0) Requirement already satisfied: grpcio<2.0,>=1.24.3 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow) (1.62.0) Requirement already satisfied: tensorboard<2.17,>=2.16 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow) (2.16.2) Requirement already satisfied: keras>=3.0.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow) (3.0.5) Requirement already satisfied: numpy<2.0.0,>=1.26.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorflow-intel==2.16.1->tensorflow) (1.26.2) Requirement already satisfied: wheel<1.0,>=0.23.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from astunparse>=1.6.0->tensorflow-intel==2.16.1->tensorflow) (0.42.0) Requirement already satisfied: rich in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from keras>=3.0.0->tensorflow-intel==2.16.1->tensorflow) (13.7.0) Requirement already satisfied: namex in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from keras>=3.0.0->tensorflow-intel==2.16.1->tensorflow) (0.0.7) Requirement already satisfied: dm-tree in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from keras>=3.0.0->tensorflow-intel==2.16.1->tensorflow) (0.1.8) Requirement already satisfied: charset-normalizer<4,>=2 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from requests<3,>=2.21.0->tensorflow-intel==2.16.1->tensorflow) (3.3.2) Requirement already satisfied: idna<4,>=2.5 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from requests<3,>=2.21.0->tensorflow-intel==2.16.1->tensorflow) (3.6) Requirement already satisfied: urllib3<3,>=1.21.1 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from requests<3,>=2.21.0->tensorflow-intel==2.16.1->tensorflow) (2.2.0) Requirement already satisfied: certifi>=2017.4.17 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from requests<3,>=2.21.0->tensorflow-intel==2.16.1->tensorflow) (2024.2.2) Requirement already satisfied: markdown>=2.6.8 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorboard<2.17,>=2.16->tensorflow-intel==2.16.1->tensorflow) (3.5.2) Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorboard<2.17,>=2.16->tensorflow-intel==2.16.1->tensorflow) (0.7.2) Requirement already satisfied: werkzeug>=1.0.1 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from tensorboard<2.17,>=2.16->tensorflow-intel==2.16.1->tensorflow) (3.0.1) Requirement already satisfied: MarkupSafe>=2.1.1 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from werkzeug>=1.0.1->tensorboard<2.17,>=2.16->tensorflow-intel==2.16.1->tensorflow) (2.1.5) Requirement already satisfied: markdown-it-py>=2.2.0 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from rich->keras>=3.0.0->tensorflow-intel==2.16.1->tensorflow) (3.0.0) Requirement already satisfied: pygments<3.0.0,>=2.13.0 in c:\users\91995\appdata\roaming\python\python312\site-packages (from rich->keras>=3.0.0->tensorflow-intel==2.16.1->tensorflow) (2.17.2) Requirement already satisfied: mdurl~=0.1 in c:\users\91995\appdata\local\programs\python\python312\lib\site-packages (from markdown-it-py>=2.2.0->rich->keras>=3.0.0->tensorflow-intel==2.16.1->tensorflow) (0.1.2)
In [ ]:
# IMAGE_SHAPE = (224, 224)
# BATCH_SIZE = 32
# resnet_model = create_model(resnet_url, num_classes=24)
# # Compile
# resnet_model.compile(loss='categorical_crossentropy',
# optimizer=tf.keras.optimizers.Adam(),
# metrics=['accuracy'])
WARNING:tensorflow:From c:\Users\91995\AppData\Local\Programs\Python\Python312\Lib\site-packages\tensorflow_hub\resolver.py:120: The name tf.gfile.MakeDirs is deprecated. Please use tf.io.gfile.makedirs instead.
WARNING:tensorflow:From c:\Users\91995\AppData\Local\Programs\Python\Python312\Lib\site-packages\tensorflow_hub\resolver.py:120: The name tf.gfile.MakeDirs is deprecated. Please use tf.io.gfile.makedirs instead.
WARNING:tensorflow:From c:\Users\91995\AppData\Local\Programs\Python\Python312\Lib\site-packages\tensorflow_hub\module_v2.py:126: The name tf.saved_model.load_v2 is deprecated. Please use tf.compat.v2.saved_model.load instead.
WARNING:tensorflow:From c:\Users\91995\AppData\Local\Programs\Python\Python312\Lib\site-packages\tensorflow_hub\module_v2.py:126: The name tf.saved_model.load_v2 is deprecated. Please use tf.compat.v2.saved_model.load instead.
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) Cell In[24], line 3 1 IMAGE_SHAPE = (224, 224) 2 BATCH_SIZE = 32 ----> 3 resnet_model = create_model(resnet_url, num_classes=24) 5 # Compile 6 resnet_model.compile(loss='categorical_crossentropy', 7 optimizer=tf.keras.optimizers.Adam(), 8 metrics=['accuracy']) Cell In[21], line 20, in create_model(model_url, num_classes) 14 feature_extractor_layer = hub.KerasLayer(model_url, 15 trainable=False, # freeze the underlying patterns 16 name='feature_extraction_layer', 17 input_shape=IMAGE_SHAPE+(3,)) # define the input image shape 19 # Create our own model ---> 20 model = tf.keras.Sequential([ 21 feature_extractor_layer, # use the feature extraction layer as the base 22 Dense(num_classes, activation='softmax', name='output_layer') # create our own output layer 23 ]) 25 return model File c:\Users\91995\AppData\Local\Programs\Python\Python312\Lib\site-packages\keras\src\models\sequential.py:70, in Sequential.__init__(self, layers, trainable, name) 68 if layers: 69 for layer in layers: ---> 70 self.add(layer, rebuild=False) 71 self._maybe_rebuild() File c:\Users\91995\AppData\Local\Programs\Python\Python312\Lib\site-packages\keras\src\models\sequential.py:92, in Sequential.add(self, layer, rebuild) 90 layer = origin_layer 91 if not isinstance(layer, Layer): ---> 92 raise ValueError( 93 "Only instances of `keras.Layer` can be " 94 f"added to a Sequential model. Received: {layer} " 95 f"(of type {type(layer)})" 96 ) 97 if not self._is_layer_name_unique(layer): 98 raise ValueError( 99 "All layers added to a Sequential model " 100 f"should have unique names. Name '{layer.name}' is already " 101 "the name of a layer in this model. Update the `name` argument " 102 "to pass a unique name." 103 ) ValueError: Only instances of `keras.Layer` can be added to a Sequential model. Received: <tensorflow_hub.keras_layer.KerasLayer object at 0x00000263F3582B70> (of type <class 'tensorflow_hub.keras_layer.KerasLayer'>)
history = model.fit(x_train,y_train, validation_data = (x_test,y_test), epochs = 10, callbacks=[early_stop], batch_size = 3 shuffle=True)
In [ ]:
from tensorflow.keras.applications.resnet50 import ResNet50
from tensorflow.keras.models import Model
In [ ]:
import tensorflow as tf
base_model = ResNet50(include_top=False, weights='imagenet')
x= base_model.output
x = tf.keras.layers.GlobalAveragePooling2D()(x)
x=tf.keras.layers.Dense(1024, activation= "relu" )(x)
predictions = tf.keras.layers.Dense (24, activation='softmax')(x)
model = Model(inputs=base_model.input, outputs=predictions)
for layer in base_model.layers:
layer.trainable = False
model. compile(optimizer='adam', loss='categorical_crossentropy', metrics = ["accuracy"])
# print(target)
In [ ]:
epochs=10
history = model.fit(
train_ds,
validation_data=val_ds,
epochs=epochs
)
# history = model.fit(
# y_train,
# validation_data=y_test,
# epochs=10
# )
Epoch 1/10
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Cell In[52], line 2 1 epochs=10 ----> 2 history = model.fit( 3 train_ds, 4 validation_data=val_ds, 5 epochs=epochs 6 ) 7 # history = model.fit( 8 # y_train, 9 # validation_data=y_test, 10 # epochs=10 11 # ) File c:\Users\91995\AppData\Local\Programs\Python\Python312\Lib\site-packages\keras\src\utils\traceback_utils.py:123, in filter_traceback.<locals>.error_handler(*args, **kwargs) 120 filtered_tb = _process_traceback_frames(e.__traceback__) 121 # To get the full stack trace, call: 122 # `keras.config.disable_traceback_filtering()` --> 123 raise e.with_traceback(filtered_tb) from None 124 finally: 125 del filtered_tb File c:\Users\91995\AppData\Local\Programs\Python\Python312\Lib\site-packages\keras\src\trainers\trainer.py:854, in Trainer._pythonify_logs(self, logs) 852 def _pythonify_logs(self, logs): 853 result = {} --> 854 for key, value in sorted(logs.items()): 855 if isinstance(value, dict): 856 result.update(self._pythonify_logs(value)) AttributeError: 'NoneType' object has no attribute 'items'
In [ ]:
model.save("resnet.h5")
WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`.
Visualization¶
In [ ]:
plt.figure(figsize=(10, 8))
plt.plot(history.history['accuracy'], label='train acc')
plt.plot(history.history['val_accuracy'], label='val acc')
plt.legend()
plt.title('Accuracy')
plt.show()
In [ ]:
plt.figure(figsize=(10, 8))
plt.plot(history.history['loss'], label='train loss')
plt.plot(history.history['val_loss'], label='val loss')
plt.legend()
plt.title('Loss')
plt.show()
Model Evaluation¶
In [ ]:
model.evaluate(x_test, y_test, batch_size=32)
33/33 ━━━━━━━━━━━━━━━━━━━━ 315s 9s/step - accuracy: 0.5528 - loss: 4.5700
Out[ ]:
[3.712730646133423, 0.5808612704277039]
In [ ]:
y_pred = model.predict(x_test)
33/33 ━━━━━━━━━━━━━━━━━━━━ 313s 9s/step
In [ ]:
y_pred=np.argmax(y_pred,axis=1)
In [ ]:
print(classification_report(y_pred,y_test))
precision recall f1-score support
0 0.97 1.00 0.98 30
1 0.85 0.83 0.84 35
2 0.47 0.25 0.33 28
3 0.21 0.33 0.25 21
4 0.52 0.69 0.59 32
5 0.37 0.42 0.39 26
6 0.33 0.93 0.49 29
7 1.00 0.36 0.53 83
8 0.47 1.00 0.64 21
9 0.00 0.00 0.00 8
10 0.10 0.13 0.11 31
11 0.81 0.30 0.44 97
12 0.17 0.67 0.27 9
13 0.90 0.45 0.60 60
14 0.78 0.48 0.59 67
15 0.37 0.56 0.44 43
16 0.81 0.91 0.86 89
17 0.59 0.87 0.70 31
18 0.23 0.50 0.32 14
19 0.10 0.18 0.13 17
20 0.97 0.50 0.66 135
21 0.77 0.89 0.83 54
22 0.82 0.86 0.84 43
23 1.00 0.71 0.83 42
accuracy 0.58 1045
macro avg 0.57 0.58 0.53 1045
weighted avg 0.72 0.58 0.60 1045
Confusion Matrix¶
In [ ]:
cm = confusion_matrix(y_pred,y_test)
plt.figure(figsize=(10, 8))
ax = plt.subplot()
sns.set(font_scale=2.0)
sns.heatmap(cm, annot=True, fmt='g', cmap="Blues", ax=ax);
# labels, title and ticks
ax.set_xlabel('Predicted labels', fontsize=20);
ax.set_ylabel('True labels', fontsize=20);
ax.set_title('Confusion Matrix', fontsize=20);
In [ ]:
f1_score(y_test, y_pred, average='micro')
Out[ ]:
0.5808612440191387
In [ ]:
recall_score(y_test, y_pred, average='weighted')
Out[ ]:
0.5808612440191387
In [ ]:
precision_score(y_test, y_pred, average='micro')
Out[ ]:
0.5808612440191387
Saving Model¶
In [ ]:
model.save("resent152(1).h5")
WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`.